<?php
require_once("{$CfgPara->root}/class/make_img_name.class.php");

/**
 * 处理已提交的临时文件夹中的图片文件
 * @param int $type 处理图片的类型 1头像 2消息\对话 3作品、主题、鞋主秀等
 * @param mixed $img_names 提交的图片名字符串 以;号分隔 Temp表示新上传的图片，Save表示原已保存过的图片
 * @param mixed $root 当前服务器保存图片的目录 例如[根目录]/works_pic/的文件夹 最后带/符号
 * @param mixed $table 保存图片的数据库表
 * @param mixed $field_name 保存图片的数据库字段
 * @param mixed $update_id 如果为更新 指定更新行的Id
 * @return mixed 错误返回false
 */
function do_edit_img($type, $img_names, $root, $table, $field_name, $update_id = 0)
{
    //20161121 修改 保存草稿时可以不需要图片
    if (strlen($img_names) <= 0) {
        return '';
    }
    $imgs_temp = rtrim($img_names, ';');
    //提交的图片名
    $imgs_up_array = explode(';', $imgs_temp);
    $imgs = '';
    $imgs_server_array = array();
    $img_name_helper = new make_img_name();
    foreach ($imgs_up_array as $img_name) {
        $name = explode('|', $img_name); //[0]:Temp表示新上传的图片，Save表示原已保存过的图片 [1]图片名 不带路径
        //print_r($name);
        if (count($name) == 2) {
            if ($name[0] == 'Save')//原已在服务器的图片名
            {
                $imgs_server_array[] = $name[1]; //为后面删除操作，缓存起来
                $imgs .= $name[1] . ';';
            } elseif ($name[0] == 'Temp') //新上传或编辑后的在缓存文件夹中的图片名
            {
                //将缓存文件夹中的文件移动到正式文件夹中
                //20170117 修改 一共需要移动4个图片
                //1 带水印的原尺图 1024*768 
                //2 不带水印的微型图 120*90 micro
                //3 带水印的迷你图 420*313 mini
                //4 不带水印的原图 1024*768 old
                $temp_name = "{$root}temp/{$name[1]}";
                $temp_name_micro = $img_name_helper->make_img_micro_name($temp_name);
                $temp_name_mini = $img_name_helper->make_img_mini_name($temp_name);
                $temp_name_old = $img_name_helper->make_img_old_name($temp_name);
                $new_name = "{$root}{$name[1]}";
                $new_name_micro = $img_name_helper->make_img_micro_name($new_name);
                $new_name_mini = $img_name_helper->make_img_mini_name($new_name);
                $new_name_old = $img_name_helper->make_img_old_name($new_name);
                if (file_exists($temp_name))//判断临时文件夹中是否有文件 并将临时文件剪切到工作文件夹中
                {
                    if ($type == 3) {
                        if (@rename($temp_name, $new_name) === true &&
                            @rename($temp_name_micro, $new_name_micro) === true &&
                            @rename($temp_name_mini, $new_name_mini) === true &&
                            @rename($temp_name_old, $new_name_old) === true
                        ) {
                            $imgs .= $name[1] . ';';
                        }
                    } elseif ($type == 2) //消息的图片只有mini 与 原图
                    {
                        if (@rename($temp_name, $new_name) === true &&
                            @rename($temp_name_mini, $new_name_mini) === true
                        ) {
                            $imgs .= $name[1] . ';';
                        }
                    }
                }
            }
        }
    }
    if ($update_id > 0) {
        //与当前的图片信息比较 如果没有在新的提交中 则删除
        $result = db_query("SELECT `{$field_name}` FROM `{$table}` WHERE `Id` = {$update_id}");
        if ($result !== false && !is_string($result)) {
            if ($row = $result->fetch_array()) {
                $update_save_files = $row[0]; //已经在数据库保存的图片名 不含路径 分号分隔
                $update_save_file_array = explode(';', $update_save_files);
                foreach ($update_save_file_array as $img_name) //遍历已保存的数组
                {
                    if (!in_array($img_name, $imgs_server_array))//判断现在数据库中已保存的文件是否存在现在上传的文件数组中
                    {
                        //如果不在 则将原来的文件删除
                        //20170117 修改 一共需要删除4个图片
                        //1 带水印的原尺图 1024*768 
                        //2 不带水印的微型图 120*90 micro
                        //3 带水印的迷你图 420*313 mini
                        //4 不带水印的原图 1024*768 old
                        $save_name = "{$root}{$img_name}";
                        $save_name_micro = $img_name_helper->make_img_micro_name($save_name);
                        $save_name_mini = $img_name_helper->make_img_mini_name($save_name);
                        $save_name_old = $img_name_helper->make_img_old_name($save_name);
                        if (file_exists($save_name)) {
                            @unlink($save_name);
                        }
                        if (file_exists($save_name_micro)) {
                            @unlink($save_name_micro);
                        }
                        if (file_exists($save_name_mini)) {
                            @unlink($save_name_mini);
                        }
                        if (file_exists($save_name_old)) {
                            @unlink($save_name_old);
                        }
                    }
                }
            }
        } else {
            return false;
        }
    }
    return rtrim($imgs, ';');
}

/**
 * 获取图片url的数组
 * @param string $imgString 保存的图片名的字符串
 * @param array $imgList 返回的图片url数组
 * @param int $type 图片类型 1作品 2鞋主秀 3主题 4消息
 */
function get_img_list(&$imgString, &$imgList, $type, $imgType = 'mini')
{
    global $CfgPara;
    if ($imgString == '') return null;

    $list = explode(';', $imgString);
    switch ($type) {
        case 1:
            $foder = 'works_pic';
            break;
        case 2:
            $foder = 'shoe_show_pic';
            break;
        case 3:
            $foder = 'topic_pic';
            break;
        case 4:
            $foder = 'message_pic';
            break;
    }
    $name = '';
    if ($imgType == 'mini')
        foreach ($list as $img) {
            $name = make_img_name::make_img_mini_name($img);
            $imgList[] = "{$CfgPara->httproot}/{$foder}/{$name}";
        }
    elseif ($imgType == 'micro')
        foreach ($list as $img) {
            $name = make_img_name::make_img_micro_name($img);
            $imgList[] = "{$CfgPara->httproot}/{$foder}/{$name}";
        }
}